<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /* 
            函数作用域
            调用函数时创建函数作用域，函数执行完毕时，函数的作用域销毁
            -每调用一次函数就会创建一个新的函数作用域，他们之间是相互独立的。
            在函数作用域中可以访问到群居作用域的变量,
            在全局作用域中无法访问到函数作用域的变量
            -挡在函数作用域操作一个变量时，它会在自身的作用域中寻找，如果有就直接使用
            如果没有则向上一级作用域中寻找，知道找到全局作用域
            如果全局作用域中依然没有找到，则会报错。
            在函数中要使用全局变量加 window
        */
       var a=10;
       function fun(){
           var b=111;
           var a="我是函数中的变量a";
        //    console.log("a="+a);
           function fun2(){
            console.log("a="+window.a);
           }
           fun2();

       }
       fun();
       //console.log("a="+a);


       /* 
        在函数作用域也有声明提前的特性
        使用var关键字声明的变量，会在函数中所有的代码执行之前被声明
        函数声明在会在函数中所有的代码执行之前执行
       */
      
      function fun3(){
          fun4();
          //console.log(a);
          var a=35;
          function fun4(){
              alert("我是fun4")

          }

      }
      //fun3();
      var c=33;
      /* 
        在函数中，不使用var声明的变量都会成为全局变量。
      */
      function fun5(){
          console.log("c="+c);
          c=10;
          //d没有使用var关键字，则会设置为全局变量
          window.d=100;
      }
      fun5();
      //在全局输出c
      console.log(c);
      console.log(d);
//在函数中传递了形参就等于声明了一个变量 var e
      function fun6(e){
          alert(e);
      }
      fun6();
    </script>
</head>
<body>
    
</body>
</html>